;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;//BORRA MODELOS NO ELEGIDOS///////////////////////////////////////////////////////////////////////////////////
;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;BORRAR PORTATILES QUE NO TENGAN la duracion DADA
(defrule borrar-modelos-bateria-no-incluida
	?modelo <- (fase borrar-modelos-bateria-no-incluido)
	?durBatMin <- (durBatMin ?durBatMinima)
	?durBatMax <- (durBatMax ?durBatMaxima)
	=> 
	;;MOSTRAR CARACTERISTICAS
	(retract ?modelo)
	(retract ?durBatMin)
	(retract ?durBatMax)
	(bind ?result (run-query* obtener-portatiles))
	(while (?result next)
		(bind ?port (?result getObject port))
		(if(or(< ?port.duracionBateria ?durBatMinima)(> ?port.duracionBateria ?durBatMaxima)) then
				(modify ?port (seleccionado FALSE))
		)
	)
)


(defrule busqueda-por-bateria
   ?fase <- (fase busqueda-por-caracteristica 5)
=>
	( printout t "--------------Seleccione el procesador que desea: ---------------------" crlf )
	
	( printout t "1. Duracion Standard (2-3 Horas) " crlf )
	( printout t "2. Duracion Media (3 - 4 Horas) " crlf )
	( printout t "3. Alta duracion (Mas de 4 Horas) " crlf )
	(assert (bateria (read)) )
)	
	
	
	;;//SELECCION NO VALIDA////////////////////////////////////////////////////
		(defrule seleccion-bateria-erronea
			?fase <- (fase busqueda-por-caracteristica 5)
			?eleccion <- (bateria ?numero)
			(test (or (not(integerp ?numero))
				(< ?numero 1)
				(> ?numero 3) 
				))  	
			=>
			(retract ?fase ?eleccion )
			(assert (fase busqueda-por-caracteristica 5) )
			(printout t "La opcion elegida no es valida." crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)

		;;//SELECCION VALIDA////////////////////////////////////////////////////
		(defrule seleccion-bateria-correcta
			?fase <- (fase busqueda-por-caracteristica 5)
			?eleccion <- (bateria ?numero)
			(test (and (integerp ?numero)
				(> ?numero 0)
				(< ?numero 4) 
			))  
			=>
			(retract ?fase ?eleccion)
			(assert (fase mostrar-PCs-por-bateria ?numero))
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)
		
		
		;;//PORTATILES de bateria standard///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-bateria1
			?fase <- (fase mostrar-PCs-por-bateria 1) 
		=>
			(retract ?fase)
			(assert (durBatMin 2))
			(assert (durBatMax 3))
			(assert (criterio (texto Con_bateria_standard)))
			(assert (fase borrar-modelos-bateria-no-incluido))
		)
		
		;;//PORTATILES de bateria media///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-bateria2
			?fase <- (fase mostrar-PCs-por-bateria 2) 
		=>
			(retract ?fase)
			(assert (durBatMin 3))
			(assert (durBatMax 4))
			(assert (criterio (texto Con_bateria_media)))
			(assert (fase borrar-modelos-bateria-no-incluido))
		)
		
		
		;;//PORTATILES de larga duracion///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-bateria3
			?fase <- (fase mostrar-PCs-por-bateria 3) 
		=>
			(retract ?fase)
			(assert (durBatMin 4))
			(assert (durBatMax 10))
			(assert (criterio (texto Con_bateria_largaDuracion)))
			(assert (fase borrar-modelos-bateria-no-incluido))
		)